icontheme: Call gtk_system_setting_changed
authorMatthias Clasen <mclasen@redhat.com>
Tue, 21 Apr 2020 14:44:36 +0000 (10:44 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 22 Apr 2020 23:30:48 +0000 (19:30 -0400)
When the icon theme changes, we want to both initiate
a css SOURCE change (since css values may depend on the
icon theme), as well as calling gtk_system_setting_changed,
since widgets need to drop cached images, e.g. in GtkIconHelper.

gtk/gtkicontheme.c

index 4cb92350e5d802e700c13b827614a93909466819..09fecd9196dca0113bae42eb3b50557b659afab0 100644 (file)
 #include "gtkmain.h"
 #include "gtksettingsprivate.h"
 #include "gtkstylecontextprivate.h"
+#include "gtkstyleproviderprivate.h"
 #include "gtkprivate.h"
 #include "gtksnapshot.h"
+#include "gtkwidgetprivate.h"
 #include "gdkpixbufutilsprivate.h"
 #include "gdk/gdktextureprivate.h"
 #include "gdk/gdkprofilerprivate.h"
@@ -1317,7 +1319,9 @@ theme_changed_idle__mainthread_unlocked (gpointer user_data)
 
       if (display)
         {
-          gtk_style_context_reset_widgets (self->display);
+          GtkSettings *settings = gtk_settings_get_for_display (self->display);
+          gtk_style_provider_changed (GTK_STYLE_PROVIDER (settings));
+          gtk_system_setting_changed (display, GTK_SYSTEM_SETTING_ICON_THEME);
           g_object_unref (display);
         }
 
@@ -1353,7 +1357,6 @@ do_theme_change (GtkIconTheme *self)
   blow_themes (self);
 
   queue_theme_changed (self);
-
 }
 
 static void